

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Detalle_producto.java
 *
 * Created on 15/06/2009, 03:04:32 AM
 */

package General;
import Control.Conexion;
import java.util.Vector;
import Compras.Nuevo_comprobante;
import Ventas.Nuevo_comprobanteV;
import javax.swing.JOptionPane;
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;
import Control.MiModelo;
import Control.MiModeloVentaBoleta;
/**
 *
 * @author GAMA
 */
public class Detalle_producto extends javax.swing.JFrame {
 
    Nuevo_comprobanteV comprobante_venta;
     
     Vector <Vector> d_tabla_anterior_venta=new Vector();
    int bandera=0;
    /** Creates new form Detalle_producto */
       public Detalle_producto(Nuevo_comprobanteV comprobante_venta) {
        initComponents();
        cargar_todos_productos_disponibles_venta();

        this.comprobante_venta=comprobante_venta;
        bandera=2;
        inicializar_campos_no_editables();
      
      //  this.txtprecio.setVisible(false);
     
        cargar_tipo_servicios();
        cargar_categorias();
        
    }
    public void cargar_tipo_servicios(){
        
    Conexion c=new Conexion();
    Vector <String> vtipo_servicio;
    vtipo_servicio=c.cargar_tipo_servicio_combobox();
       for(int i=0;i<vtipo_servicio.size();i++){
           cmbServicioTipo.addItem(vtipo_servicio.get(i));
       }
    }

   public void cargar_categorias(){
    Conexion c=new Conexion();
    Vector <String> vcategoria;
    vcategoria=c.cargar_categorias_combobox();
       for(int i=0;i<vcategoria.size();i++){
           cmbCategoria.addItem(vcategoria.get(i));
           cmbCategoria_en_servicio.addItem(vcategoria.get(i));
       }
    }
    public void visibleInicial(boolean valor){
        this.getContentPane().removeAll();
        
        pnlSeleccion.setSize(416, 333);
        this.getContentPane().add(pnlSeleccion);
        pnlSeleccion.repaint();
        pnlSeleccion.setVisible(true);
     
    }
    public void cargar_productos_por_categoria_Servicio(){
        Conexion c=new Conexion();
        String categoria=cmbCategoria_en_servicio.getSelectedItem().toString();
        Vector <String> vproductos=c.cargar_productos_descripcion_por_categoria(categoria);
        this.cmbServicioProducto.removeAllItems();
        for(int i=0;i<vproductos.size();i++){
            cmbServicioProducto.addItem(vproductos.get(i));
        }
    }
    public void cargar_productos_por_categoria(){
        Conexion c=new Conexion();
        String categoria=cmbCategoria.getSelectedItem().toString();
        Vector <String> vproductos=c.cargar_productos_descripcion_por_categoria(categoria);
        this.cmbproducto.removeAllItems();
        lblstock.setText("");
        lblpreciounitario.setText("");
        for(int i=0;i<vproductos.size();i++){
            this.cmbproducto.addItem(vproductos.get(i));
          
        }
    }

     public void cargar_todos_productos_disponibles_venta(){
        Conexion c=new Conexion();
        Vector <String> vproductos=c.cargar_productos_disponibles();
        this.cmbproducto.removeAllItems();
        for(int i=0;i<vproductos.size();i++){
            this.cmbproducto.addItem(vproductos.get(i));
        }
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlAgregarProducto = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        cmbproducto = new javax.swing.JComboBox();
        lblcantidad = new javax.swing.JLabel();
        lblprecio = new javax.swing.JLabel();
        txtcantidad = new javax.swing.JTextField();
        btnAceptar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        lblstock = new javax.swing.JLabel();
        lblpreciounitario = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        txtguia = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        cmbCategoria = new javax.swing.JComboBox();
        pnlAgregarServicio = new javax.swing.JPanel();
        cmbServicioProducto = new javax.swing.JComboBox();
        jLabel6 = new javax.swing.JLabel();
        txtServicioGuia = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        cmbServicioTipo = new javax.swing.JComboBox();
        btnAceptar1 = new javax.swing.JButton();
        btnCancelar1 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        txtServicioCantidad = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        txtServicioPrecio = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        cmbCategoria_en_servicio = new javax.swing.JComboBox();
        pnlSeleccion = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        cmbSeleccion = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();

        pnlAgregarProducto.setMinimumSize(new java.awt.Dimension(416, 333));
        pnlAgregarProducto.setPreferredSize(new java.awt.Dimension(416, 333));
        pnlAgregarProducto.setLayout(null);

        jLabel1.setText("Categoría:");
        pnlAgregarProducto.add(jLabel1);
        jLabel1.setBounds(110, 60, 60, 20);

        cmbproducto.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbproductoItemStateChanged(evt);
            }
        });
        pnlAgregarProducto.add(cmbproducto);
        cmbproducto.setBounds(180, 100, 170, 20);

        lblcantidad.setText("Cantidad a vender:");
        pnlAgregarProducto.add(lblcantidad);
        lblcantidad.setBounds(60, 180, 110, 20);

        lblprecio.setText("Precio unitario (S/.): ");
        pnlAgregarProducto.add(lblprecio);
        lblprecio.setBounds(60, 220, 120, 20);

        txtcantidad.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                txtcantidadCaretUpdate(evt);
            }
        });
        txtcantidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtcantidadActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(txtcantidad);
        txtcantidad.setBounds(180, 180, 100, 20);

        btnAceptar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Aceptar16.gif"))); // NOI18N
        btnAceptar.setMnemonic('A');
        btnAceptar.setText("Aceptar");
        btnAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAceptarActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(btnAceptar);
        btnAceptar.setBounds(80, 280, 100, 25);

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        btnCancelar.setMnemonic('C');
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(btnCancelar);
        btnCancelar.setBounds(220, 280, 100, 25);

        jLabel5.setText("Stock Actual: ");
        pnlAgregarProducto.add(jLabel5);
        jLabel5.setBounds(90, 140, 70, 20);

        lblstock.setFont(new java.awt.Font("Tahoma", 1, 12));
        pnlAgregarProducto.add(lblstock);
        lblstock.setBounds(180, 140, 70, 20);

        lblpreciounitario.setFont(new java.awt.Font("Tahoma", 1, 12));
        pnlAgregarProducto.add(lblpreciounitario);
        lblpreciounitario.setBounds(180, 220, 80, 20);

        jLabel2.setText("Guía:");
        pnlAgregarProducto.add(jLabel2);
        jLabel2.setBounds(130, 20, 25, 30);
        pnlAgregarProducto.add(txtguia);
        txtguia.setBounds(180, 20, 70, 20);

        jLabel10.setText("Producto:");
        pnlAgregarProducto.add(jLabel10);
        jLabel10.setBounds(110, 100, 60, 20);

        cmbCategoria.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbCategoriaItemStateChanged(evt);
            }
        });
        pnlAgregarProducto.add(cmbCategoria);
        cmbCategoria.setBounds(180, 60, 160, 20);

        pnlAgregarServicio.setPreferredSize(new java.awt.Dimension(416, 333));
        pnlAgregarServicio.setLayout(null);

        cmbServicioProducto.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbServicioProductoItemStateChanged(evt);
            }
        });
        pnlAgregarServicio.add(cmbServicioProducto);
        cmbServicioProducto.setBounds(170, 180, 120, 20);

        jLabel6.setText("Guía:");
        pnlAgregarServicio.add(jLabel6);
        jLabel6.setBounds(120, 20, 40, 20);
        pnlAgregarServicio.add(txtServicioGuia);
        txtServicioGuia.setBounds(170, 20, 70, 20);

        jLabel7.setText("Tipo de Servicio:");
        pnlAgregarServicio.add(jLabel7);
        jLabel7.setBounds(70, 100, 90, 20);

        pnlAgregarServicio.add(cmbServicioTipo);
        cmbServicioTipo.setBounds(170, 100, 130, 20);

        btnAceptar1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Aceptar16.gif"))); // NOI18N
        btnAceptar1.setMnemonic('A');
        btnAceptar1.setText("Aceptar");
        btnAceptar1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAceptar1ActionPerformed(evt);
            }
        });
        pnlAgregarServicio.add(btnAceptar1);
        btnAceptar1.setBounds(70, 270, 100, 25);

        btnCancelar1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        btnCancelar1.setMnemonic('C');
        btnCancelar1.setText("Cancelar");
        btnCancelar1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelar1ActionPerformed(evt);
            }
        });
        pnlAgregarServicio.add(btnCancelar1);
        btnCancelar1.setBounds(200, 270, 100, 25);

        jLabel4.setText("Nombre producto:");
        pnlAgregarServicio.add(jLabel4);
        jLabel4.setBounds(60, 180, 90, 14);

        jLabel8.setText("Cantidad:");
        pnlAgregarServicio.add(jLabel8);
        jLabel8.setBounds(100, 60, 50, 20);
        pnlAgregarServicio.add(txtServicioCantidad);
        txtServicioCantidad.setBounds(170, 60, 70, 20);

        jLabel9.setText("Precio:");
        pnlAgregarServicio.add(jLabel9);
        jLabel9.setBounds(110, 220, 33, 14);
        pnlAgregarServicio.add(txtServicioPrecio);
        txtServicioPrecio.setBounds(170, 220, 70, 20);

        jLabel11.setText("Categoría:");
        pnlAgregarServicio.add(jLabel11);
        jLabel11.setBounds(100, 140, 60, 14);

        cmbCategoria_en_servicio.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbCategoria_en_servicioItemStateChanged(evt);
            }
        });
        pnlAgregarServicio.add(cmbCategoria_en_servicio);
        cmbCategoria_en_servicio.setBounds(170, 140, 130, 20);

        setTitle("Detalle producto");
        setIconImage(new ImageIcon(this.getClass().getResource("/imagenes/icono.gif")).getImage());
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });
        getContentPane().setLayout(null);

        pnlSeleccion.setPreferredSize(new java.awt.Dimension(416, 333));
        pnlSeleccion.setLayout(null);

        jLabel3.setText("Seleccione lo que desea agregar: ");
        pnlSeleccion.add(jLabel3);
        jLabel3.setBounds(20, 100, 170, 14);

        cmbSeleccion.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Producto", "Servicio" }));
        pnlSeleccion.add(cmbSeleccion);
        cmbSeleccion.setBounds(200, 100, 140, 20);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Aceptar16.gif"))); // NOI18N
        jButton1.setText("Aceptar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        pnlSeleccion.add(jButton1);
        jButton1.setBounds(80, 150, 100, 25);

        jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        jButton4.setText("Cancelar");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        pnlSeleccion.add(jButton4);
        jButton4.setBounds(220, 150, 100, 25);

        getContentPane().add(pnlSeleccion);
        pnlSeleccion.setBounds(0, 0, 410, 330);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-424)/2, (screenSize.height-367)/2, 424, 367);
    }// </editor-fold>//GEN-END:initComponents
 public void boton_aceptar_servicio(){
     txtServicioCantidad.setBackground(Color.WHITE);
     txtServicioPrecio.setBackground(Color.WHITE);
     cmbServicioProducto.setBackground(Color.WHITE);
        String guia="";
        String producto="";
        
        String seleccion=cmbSeleccion.getSelectedItem().toString();

      
        int cantidad=-1;
        float precio=-1;
        guia=txtServicioGuia.getText();
        try{
        cantidad=Integer.parseInt(txtServicioCantidad.getText());
        producto=cmbServicioProducto.getSelectedItem().toString();
        precio=Float.parseFloat(txtServicioPrecio.getText());

        if(bandera==2){//AQUÍ factura/boleta venta
                //para asegurar que no se vuelva a ingresar el mismo producto en un comprobante

                DefaultTableModel modelo=comprobante_venta.retornarModeloTabla();
                boolean encontrado=false;
                String descripcion_a_comparar=producto;
                if(seleccion.equals("Servicio")){
                    String tipo_servicio=cmbServicioTipo.getSelectedItem().toString();
                   descripcion_a_comparar=tipo_servicio+" "+producto;
                }
                for(int i=0;i<modelo.getRowCount();i++){
                    if(descripcion_a_comparar.equals(modelo.getValueAt(i, 2))) encontrado=true;
                }
              

               if(!encontrado){
                    boolean validado=true;

                    if(validado){
                         //Necesario crear vector para que, en caso el usuario modifique directamente(cantidad) en la tabla de detalle del producto, si se equivoca la celda vuelva al valor anterior al error
                    Vector aux=new Vector();
                    String valor=cmbServicioTipo.getSelectedItem().toString();
                    producto=cmbServicioTipo.getSelectedItem().toString()+" "+producto;
                    aux.add(guia);
                    aux.add(cantidad);
                    aux.add(producto);
                    aux.add(precio);
                    float total_parcial=Float.parseFloat(""+comprobante_venta.redondear(precio*cantidad, 2));
                    aux.add(total_parcial);
                    this.d_tabla_anterior_venta.add(aux);
                    comprobante_venta.cargar_datos_detalle_producto_venta(guia,cantidad, producto, precio,total_parcial);
                    comprobante_venta.habilitarBoton(true);
                     limpiar_campos_Servicio();
                     this.setVisible(false);
                     }

               
                }else{
                     JOptionPane.showMessageDialog(this,"El servicio ya existe en el comprobante","Información",JOptionPane.WARNING_MESSAGE);
                }

            }
        


        }catch(Exception e){
            //if(cantidad==-1) txtcantidad.setBackground(Color.PINK);
            /*try{
                precio=Float.parseFloat(txtprecio.getText());
            }catch(Exception ev){
                if(precio==-1)txtprecio.setBackground(Color.PINK);
            }*/
            if(bandera==1){
            if(txtServicioCantidad.getText().equals("") ){
                txtServicioCantidad.setBackground(new Color(249,232,232));
            JOptionPane.showMessageDialog(this,"Ingrese cantidad de servicio","No se puede agregar servicio",JOptionPane.ERROR_MESSAGE);
            }else{
                if(txtServicioPrecio.getText().equals("")){
                    txtServicioPrecio.setBackground(new Color(249,232,232));
                    JOptionPane.showMessageDialog(this,"Ingrese precio de servicio","No se puede agregar servicio",JOptionPane.ERROR_MESSAGE);
                }else{
                JOptionPane.showMessageDialog(this,"Formato de datos erróneo","Error",JOptionPane.ERROR_MESSAGE);
                }
                
            }
            }else{
                 if(txtServicioCantidad.getText().equals("")){
                    txtServicioCantidad.setBackground(new Color(249,232,232));
                    JOptionPane.showMessageDialog(this,"Ingrese cantidad de servicio","No se puede agregar servicio",JOptionPane.ERROR_MESSAGE);
                 }else{
                     if(producto.equals("")){
                         cmbServicioProducto.setBackground(new Color(249,232,232));
                         JOptionPane.showMessageDialog(this,"Ingrese nombre de producto","No se puede agregar servicio",JOptionPane.ERROR_MESSAGE);
                     }else{
                        JOptionPane.showMessageDialog(this,"Formato de datos erróneo","Error",JOptionPane.ERROR_MESSAGE);
                     }
                }
                 
            }
        }




    }
    public void boton_aceptar(){
        cmbproducto.setBackground(Color.WHITE);
        txtcantidad.setBackground(Color.WHITE);
   
        String guia="";
        String producto="";
        
        
        
        System.out.println("Mostrar:"+producto);
        int cantidad=-1;
        float precio=-1;
        guia=txtguia.getText();
        try{
        
        producto=cmbproducto.getSelectedItem().toString();
        cantidad=Integer.parseInt(txtcantidad.getText());
        
     
            precio=Float.parseFloat(lblpreciounitario.getText());
      

               
            if(bandera==2){//factura/boleta venta
                //para asegurar que no se vuelva a ingresar el mismo producto en un comprobante

                DefaultTableModel modelo=comprobante_venta.retornarModeloTabla();
                boolean encontrado=false;
                for(int i=0;i<modelo.getRowCount();i++){
                    if(producto.equals(modelo.getValueAt(i, 2))) encontrado=true;
                }
                if(!encontrado){
                //asegurarse que la cantidad ingresada sea menor o igual que el stock actual del producto
                    int stock= Integer.parseInt(lblstock.getText());

                if(cantidad<=stock){
                    boolean validado=true;

                     if(cantidad==0){
                     JOptionPane.showMessageDialog(this,"La cantidad a vender no puede ser cero","Información",JOptionPane.WARNING_MESSAGE);
                     validado=false;
                     }

                     if(cantidad<0){
                     JOptionPane.showMessageDialog(this,"La cantidad a vender no puede ser menor que cero","Información",JOptionPane.WARNING_MESSAGE);
                     validado=false;
                     }

                     if(validado){
                         //Necesario crear vector para que, en caso el usuario modifique directamente(cantidad) en la tabla de detalle del producto, si se equivoca la celda vuelva al valor anterior al error
                    Vector aux=new Vector();
                    aux.add(guia);
                    aux.add(cantidad);
                    aux.add(producto);
                    aux.add(precio);
                    float total_parcial=Float.parseFloat(""+comprobante_venta.redondear(precio*cantidad, 2));
                    aux.add(total_parcial);
                    this.d_tabla_anterior_venta.add(aux);
                    comprobante_venta.cargar_datos_detalle_producto_venta(guia,cantidad, producto, precio,total_parcial);
                    comprobante_venta.habilitarBoton(true);
                     limpiar_campos();
                     this.setVisible(false);
                     }

                }else{
                 //productos con stock cero no figuran en el combobox de productos

                        JOptionPane.showMessageDialog(this,"La cantidad a vender no puede ser mayor al stock","Información",JOptionPane.WARNING_MESSAGE);


                }
                }else{
                     JOptionPane.showMessageDialog(this,"El producto ya existe en el comprobante","Información",JOptionPane.WARNING_MESSAGE);
                }

            }
        


        }catch(Exception e){
            //if(cantidad==-1) txtcantidad.setBackground(Color.PINK);
            /*try{
                precio=Float.parseFloat(txtprecio.getText());
            }catch(Exception ev){
                if(precio==-1)txtprecio.setBackground(Color.PINK);
            }*/
            if(bandera==1){
               if(txtcantidad.getText().equals("")){
                txtcantidad.setBackground(new Color(249,232,232));
                JOptionPane.showMessageDialog(this,"Ingrese cantidad de producto","No se puede agregar artículo",JOptionPane.ERROR_MESSAGE);

                }
            }
            else{
                if(producto.equals("")){
                    cmbproducto.setBackground(new Color(249,232,232));
                    JOptionPane.showMessageDialog(this,"Ingrese nombre de producto","No se puede agregar artículo",JOptionPane.ERROR_MESSAGE);
                 }else{
                          if(txtcantidad.getText().equals("")){
                            txtcantidad.setBackground(new Color(249,232,232));
                            JOptionPane.showMessageDialog(this,"Ingrese cantidad de producto","No se puede agregar artículo",JOptionPane.ERROR_MESSAGE);
                            }else{
                              JOptionPane.showMessageDialog(this,"Formato de datos erróneo","Error",JOptionPane.ERROR_MESSAGE);
                            }
                 }
                     
                
            }
        }



        
        
    }
    private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptarActionPerformed
        // TODO add your handling code here:
        
        boton_aceptar();
        
}//GEN-LAST:event_btnAceptarActionPerformed

    public void eliminar_venta_elemento_en_anterior(int fila){
    d_tabla_anterior_venta.removeElementAt(fila);
}
    public Vector <Vector> devolver_tabla_venta_anterior()
{
    return this.d_tabla_anterior_venta;
}

    private void txtcantidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtcantidadActionPerformed
        // TODO add your handling code here:
        if(bandera==2){
            this.boton_aceptar();
        }
    }//GEN-LAST:event_txtcantidadActionPerformed

    private void cmbproductoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbproductoItemStateChanged
        // TODO add your handling code here:
        if(evt.getStateChange()==1){
            inicializar_campos_no_editables();
        }
    }//GEN-LAST:event_cmbproductoItemStateChanged
//metodo para inicializar el vector d_tabla_anterior_compra procedente de la orden de modificacion de algun comprobante que ya posee detalles de compra en un MiModelo de DefaultTableModel
public void en_modificar_venta_cargar_data_inicial(MiModeloVentaBoleta detalle){
    for (int i=0;i<detalle.getRowCount();i++){
        Vector fil =new Vector();
        fil.add(detalle.getValueAt(i, 0));
        fil.add(detalle.getValueAt(i, 1));
        fil.add(detalle.getValueAt(i, 2));
        this.d_tabla_anterior_venta.add(fil);
    }
    System.out.println("Componentes tabla_modificar: "+detalle.getRowCount());

}
    public void inicializar_campos_no_editables(){
         Conexion c=new Conexion();
        String producto=this.cmbproducto.getSelectedItem().toString();
            lblstock.setForeground(Color.BLACK);
            //consultar stock de producto
            int stock=c.retornar_stock_producto(producto);
         
                if(stock==0 && bandera==1){
                    lblstock.setForeground(Color.RED);
                }
                lblstock.setText(""+stock);
            
        if(bandera==2){
            float precio_venta= c.retornar_precio_producto(producto);
            
            lblpreciounitario.setText(""+precio_venta);

        }

}
    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        // TODO add your handling code here:
     //   this.setVisible(false);
        limpiar_campos();
        this.getContentPane().removeAll();
        pnlSeleccion.setSize(416, 333);
        this.getContentPane().add(pnlSeleccion);
        pnlSeleccion.repaint();
        pnlSeleccion.setVisible(true);

    }//GEN-LAST:event_btnCancelarActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        // TODO add your handling code here:
         this.setVisible(false);
        limpiar_campos();
    }//GEN-LAST:event_formWindowClosing

    private void txtcantidadCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_txtcantidadCaretUpdate
        // TODO add your handling code here:
          String texto=this.txtcantidad.getText();
          char [] elemento=texto.toCharArray();
          boolean valido=true;

          for(int i=0;i<elemento.length;i++){
              if(Character.isLetter(elemento[i])){
                  valido=false;
              }
              if(elemento[i]=='-'){
                  valido=false;
              }
          }
          try{
              Integer.parseInt(txtcantidad.getText());
              if(bandera==2){
              if(Integer.parseInt(texto)> Integer.parseInt(lblstock.getText())){
                  valido=false;
              }

          }

          }catch(Exception e){
              valido=false;
          }

          if(!valido){
              txtcantidad.setForeground(Color.RED);

          }else{
              txtcantidad.setForeground(Color.BLACK);
          }
    }//GEN-LAST:event_txtcantidadCaretUpdate

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        this.getContentPane().removeAll();
        if(cmbSeleccion.getSelectedItem().toString().equals("Producto")){
        pnlAgregarProducto.setSize(416, 333);
        this.getContentPane().add(pnlAgregarProducto);
        pnlAgregarProducto.repaint();
        pnlAgregarProducto.setVisible(true);
        }else{

        pnlAgregarServicio.setSize(416, 333);
        this.getContentPane().add(pnlAgregarServicio);
        
        pnlAgregarServicio.repaint();
        pnlAgregarServicio.setVisible(false);
        pnlAgregarServicio.setVisible(true);
        }

    }//GEN-LAST:event_jButton1ActionPerformed

    private void cmbServicioProductoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbServicioProductoItemStateChanged
        // TODO add your handling code here:
    }//GEN-LAST:event_cmbServicioProductoItemStateChanged

    private void btnAceptar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptar1ActionPerformed
        // TODO add your handling code here:
        boton_aceptar_servicio();
    }//GEN-LAST:event_btnAceptar1ActionPerformed

    private void btnCancelar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelar1ActionPerformed
        // TODO add your handling code here:
        //this.setVisible(false);
        limpiar_campos_Servicio();
        this.getContentPane().removeAll();

        pnlSeleccion.setSize(416, 333);
        this.getContentPane().add(pnlSeleccion);
        pnlSeleccion.repaint();
        pnlSeleccion.setVisible(true);

    }//GEN-LAST:event_btnCancelar1ActionPerformed

    private void cmbCategoriaItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbCategoriaItemStateChanged
        // TODO add your handling code here:
        cargar_productos_por_categoria();
    }//GEN-LAST:event_cmbCategoriaItemStateChanged

    private void cmbCategoria_en_servicioItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbCategoria_en_servicioItemStateChanged
        // TODO add your handling code here:
       cargar_productos_por_categoria_Servicio();
    }//GEN-LAST:event_cmbCategoria_en_servicioItemStateChanged

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        // TODO add your handling code here:
        this.setVisible(false);
    }//GEN-LAST:event_jButton4ActionPerformed

    public void limpiar_campos(){
      if(cmbCategoria.getItemCount()!=0){
        cmbCategoria.setSelectedIndex(0);
      }
      cargar_productos_por_categoria();
      txtguia.setText("");
    txtcantidad.setText("");
    txtcantidad.setBackground(Color.WHITE);
    txtguia.setFocusable(true);


}

     public void limpiar_campos_Servicio(){
    if(cmbServicioTipo.getItemCount()!=0){
         cmbServicioTipo.setSelectedIndex(0);
    }
      if(cmbCategoria_en_servicio.getItemCount()!=0){
         cmbCategoria_en_servicio.setSelectedIndex(0);
    }
    
    cargar_productos_por_categoria();
    txtServicioGuia.setText("");
    txtServicioCantidad.setText("");
    txtServicioCantidad.setBackground(Color.WHITE);
    if(bandera==1){
    txtServicioPrecio.setText("");
    txtServicioPrecio.setBackground(Color.WHITE);
    }
    else{
    txtServicioPrecio.setText("");
    }
    txtServicioGuia.setFocusable(true);
     }
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
             //   new Detalle_producto().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAceptar;
    private javax.swing.JButton btnAceptar1;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnCancelar1;
    private javax.swing.JComboBox cmbCategoria;
    private javax.swing.JComboBox cmbCategoria_en_servicio;
    private javax.swing.JComboBox cmbSeleccion;
    private javax.swing.JComboBox cmbServicioProducto;
    private javax.swing.JComboBox cmbServicioTipo;
    private javax.swing.JComboBox cmbproducto;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLabel lblcantidad;
    private javax.swing.JLabel lblprecio;
    private javax.swing.JLabel lblpreciounitario;
    private javax.swing.JLabel lblstock;
    private javax.swing.JPanel pnlAgregarProducto;
    private javax.swing.JPanel pnlAgregarServicio;
    private javax.swing.JPanel pnlSeleccion;
    private javax.swing.JTextField txtServicioCantidad;
    private javax.swing.JTextField txtServicioGuia;
    private javax.swing.JTextField txtServicioPrecio;
    private javax.swing.JTextField txtcantidad;
    private javax.swing.JTextField txtguia;
    // End of variables declaration//GEN-END:variables

}
